From 91dafadca2744957e6cc3ae13688c9033ec3c330 Mon Sep 17 00:00:00 2001
From: conrad <conrad@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Date: Sat, 23 May 2009 18:36:20 +0000
Subject: [PATCH 08/27] ARM: NEON VP3 Loop Filter

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18916 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
---
 libavcodec/Makefile           |    4 ++++
 libavcodec/arm/dsputil_neon.c |    8 ++++++++
 2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index cf742d1..a213309 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -479,11 +479,15 @@ OBJS-$(HAVE_ARMVFP)                    += arm/dsputil_vfp.o             \
 OBJS-$(HAVE_IWMMXT)                    += arm/dsputil_iwmmxt.o          \
                                           arm/mpegvideo_iwmmxt.o        \
 
+NEON-OBJS-$(CONFIG_THEORA_DECODER)     += arm/vp3dsp_neon.o
+NEON-OBJS-$(CONFIG_VP3_DECODER)        += arm/vp3dsp_neon.o
+
 OBJS-$(HAVE_NEON)                      += arm/dsputil_neon.o            \
                                           arm/dsputil_neon_s.o          \
                                           arm/h264dsp_neon.o            \
                                           arm/h264idct_neon.o           \
                                           arm/simple_idct_neon.o        \
+					  $(NEON-OBJS-yes)
 
 OBJS-$(ARCH_BFIN)                      += bfin/dsputil_bfin.o           \
                                           bfin/fdct_bfin.o              \
diff --git a/libavcodec/arm/dsputil_neon.c b/libavcodec/arm/dsputil_neon.c
index 9b95130..20425c1 100644
--- a/libavcodec/arm/dsputil_neon.c
+++ b/libavcodec/arm/dsputil_neon.c
@@ -150,6 +150,9 @@ void ff_h264_idct_add8_neon(uint8_t **dest, const int *block_offset,
                             DCTELEM *block, int stride,
                             const uint8_t nnzc[6*8]);
 
+void ff_vp3_v_loop_filter_neon(uint8_t *, int, int *);
+void ff_vp3_h_loop_filter_neon(uint8_t *, int, int *);
+
 void ff_vector_fmul_neon(float *dst, const float *src, int len);
 void ff_vector_fmul_window_neon(float *dst, const float *src0,
                                 const float *src1, const float *win,
@@ -255,6 +258,11 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx)
     c->h264_idct_add16intra = ff_h264_idct_add16intra_neon;
     c->h264_idct_add8       = ff_h264_idct_add8_neon;
 
+    if (CONFIG_VP3_DECODER || CONFIG_THEORA_DECODER) {
+        c->vp3_v_loop_filter = ff_vp3_v_loop_filter_neon;
+        c->vp3_h_loop_filter = ff_vp3_h_loop_filter_neon;
+    }
+
     c->vector_fmul = ff_vector_fmul_neon;
     c->vector_fmul_window = ff_vector_fmul_window_neon;
 
-- 
1.6.3.3

